﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ITAP.ShprossesBuilder.Modelling.Components;
using System.Drawing;
using System.Drawing.Printing;

namespace ITAP.ShprossesBuilder.Editor
{
    public class ImageExportInfo
    {
        private PageSettings pageSettings = null;

        public PageSettings PageSettings
        {
            get { return pageSettings; }
            set { pageSettings = value; }
        }

        private bool enabled = true;

        public bool Enabled
        {
            get { return enabled; }
            set { enabled = value; }
        }
        private ModelCell model;

        public ModelCell Model
        {
            get { return model; }
            set { model = value; }
        }

        /// <summary>
        /// Размер листа, на котором будет отображён чертёж модели. Если размер нулевой (IsEmpty == true), 
        /// тогда рисунок будет масштабироваться относительно размеров контрола, иначе - будет масштабироваться 
        /// относительно размеров листа, который будет отображён на контроле.
        /// </summary>
        public SizeF VisiblePageSize
        {
            get 
            {
                if (pageSettings == null)
                    return SizeF.Empty;
                else
                    return new SizeF(pageSettings.PrintableArea.Width, pageSettings.PrintableArea.Height);
            }
        }

        private DimensionsPreferences dimensionsPreferences;

        public DimensionsPreferences DimensionsPreferences
        {
            get { return dimensionsPreferences; }
            set { dimensionsPreferences = value; }
        }

        public ImageExportInfo(ModelCell modelCell, DimensionsPreferences dimensionsPreferences, PageSettings printerPageSettings)
        {
            this.pageSettings = printerPageSettings;
            this.model = modelCell;
            this.dimensionsPreferences = dimensionsPreferences;
        }

        public override string ToString()
        {
            return this.model.Name;
        }
    }
}
